home *** CD-ROM | disk | FTP | other *** search
- /* © Harold H. Ipolyi 11 June 1994, 1995
-
- ( lha a Scion2html Scion2html.rexx )
-
- -------------------------------README----------------------------------------
- Short: makes html's from ScionGenealogist database
- Uploader: ipolyi@pat.mdc.com (Harold H. Ipolyi)
- Author: Harold H. Ipolyi
- Type: util/rexx
-
- Important: replaces previous version called "ScionToMosaic.rexx"
-
- : an ARexx script to make html hypertexts from ScionGenealogist data bases
-
- New: now includes PICTURES culled from PP{IRN}.DBNAME as inline links
- (please see PP & FP Notes)
-
- Prerequisites: ScionGenealogist V 3.13 (or greater) by Rob Akins
- html viewer (Mosaic, etc.)
-
- also: (to incorporate and display pictures:)
-
- GfxCon V1.6 (or greater) by Dirk Farin (in Sys:Tools)
- Amiga OS 3.0 (or greater) for picture datatypes
-
- Release History:
-
- 11 Jun 1994 . ScionToMosaic.rexx for ScionGenealogist V 3.06
-
- 19 Jun 1994 . MakeDir(Gdir) fixed; extra comments processed.
-
- 25 Jun 1994 . Fixed descenders; Women in List italicised
- . updated for ScionGenealogist V 3.13
-
- 3 Sep 1994 . Replace occurrences of "<ScionIRN>" by NAMES from DB
- . e.g. Replace <101> by Iam Onehundredone, Jr.
- . Added Family Info file processing; Ancestor trees
- . Added descendant charts
- . Women italicised; men boldface everywhere
- . Added creation of a textual file "GenealogyOf..."
-
- 1 Mar 1995 . cleaned up bugs in creation of textual files
-
- 6 Jun 1995 . renamed ScionToMosaic to Scion2html
- . (somehow it kept winding up in "music" on AmiNet)
- . date format in "ancestors" section normalized
- . images used as links to picture albums (see
- . PP & FP Notes) and links to pictures
- . GfxCon V1.6 used for picture copying and reducing
- . recoded for DOS/Windows restricted 8.3 file names
- .
-
- WHY? others in my family don't have Amigas
-
- ScionGenealogist by Rob Akins is easy to use, comprehensive,
- and provides Arexx ports for extracting data.
-
- An ARexx script can repeatedly and painlessly recreate
- html files from entries in a ScionGenealogist data base.
-
- Mosaic, etc are available common methods of presentation.
-
- TESTED: on Amiga3000 Kickstart v.37.175 Workbench v.38.35
- & Amiga3000 Kickstart v.40.68 Workbench v.40.42
- w/ ScionGenealogist V 3.06 & Mosaic1.2NoNet
- w/ ScionGenealogist V 3.13 & Mosaic1.3betaAmitcp
-
- html file compatibility tested on Sun NCSA Mosaic
-
- -------------------------------README----------------------------------------
- -----------------------------------------------------------------
- | This Script is somewhat dependent on the following conventions |
- | that I followed in my ScionGenealogist data base: |
- | |
- | · lastnames are kept pure (no honorifics, Jr's, III's ) |
- | |
- | · given names have any and all honorifics AFTER a COMMA |
- | |
- | for example: LastName FirstNames, honorifics |
- | |
- | BAUER-GAUSS Joseph, Dr. |
- | DAGLEY Richard Kelley, Jr. |
- | |
- |-----------------------------------------------------------------|
- | |
- | For a name change (NOT maidenname > marriedname), try this: |
- | New Birth Name > Changed To, Ph. D. |
- | which lists as: Birth Name > Changed To New, Ph. D. |
- | |
- -----------------------------------------------------------------
- «»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»
- »«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«
- «»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»
- »« »«
- «» GetLastName: PROCEDURE at end of script capitalizes Last Names »«
- «» ------------------------------------------------------------- «»
- »« | it can also be used to handle "non-conforming" Last Names | »«
- «» | e.g. "MAC ISAAC" --> "MacISAAC" | «»
- »« | "VON NUEMANN" --> "VonNuemann" | »«
- «» ------------------------------------------------------------- «»
- »« BUT: you must add the additional tests yourself (it's easy!) »«
- «» «»
- «»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»
- »«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«
- «»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»
- |-----------------------------------------------------------------|
- | |
- | · if Death Date is blank; Death Place can be a COMMENT field |
- | e.g. Phone # |
- | · if Burial Date is blank; Burial Place can be a COMMENT field |
- | e.g. Address |
- -----------------------------------------------------------------
-
- * Running 'rx Scion2html.rexx' for further directions
-
- * 'rx Scion2html.rexx Normal' automagically creates a .htm file
- * for each person in your ScionGenealogist data base;
- * following the TEMPLATE:
-
- ############# begin genealogytemplate.html #########################
- <HTML>
- <TITLE>Person Data Sheet</TITLE>
- <A href="P#A.htm"><img src="P#.gif"></A>
- <H2>Person (<A HREF="P#I.htm"><I>more info</I></A>)
- (<A href="P#A.htm"><B>Picture Album</B></A>)
- (<A href="Genealogy/GENEAFIL.htm"><B>List of Persons.</B></A>)
- </H2>
- <H3>
- Born: birthdate * birthplace <BR>
- Died: deathdate + deathplace . Buried: burialplace <BR>
- </H3>
- <HR>
- <H2>List of Persons in data base.</H2><P>
- <A HREF="P#.htm"><B>malePerson</B></A> * birthdate + deathdate <A HREF="Father.htm"><B>Father</B></A>_//\_<A HREF="Mother.htm"><I>Mother</I></A><BR>
- <A HREF="P#.htm"><I>femalePerson</I></A> * birthdate + deathdate <A HREF="Father.htm"><B>Father</B></A>_//\_<A HREF="Mother.htm"><I>Mother</I></A><BR>
- <HR>
- <H3>Immediate Family of <I>Person</I></H3>
- <PRE><TT>
- <A HREF="Father.htm"><B>Father</B></A>_//\_<A HREF="Mother.htm"><I>Mother</I></A> & mdate @ mplace
- | <A HREF="Family#I.htm"><I>family info</i></A>
- |_____ <A HREF="sibling1.htm">sibling1</A> * sibling1birthdate + sibling1deathdate
- |_____ <A HREF="siblingN.htm">siblingN</A> * siblingNbirthdate + siblingNdeathdate
- |
- <b>Person</b>_//\_<A HREF="Spouse1.htm">Spouse1</A> & m1date @ m1place
- | | | <A HREF="Family#I.htm"><I>family info</i></A>
- | | |_____ <A HREF="m1child1.htm">m1child1</A> * m1child1birthdate + m1child1birthdate
- | | |_____ <A HREF="m1childN.htm">m1childN</A> * m1childNbirthdate + m1childNbirthdate
- | |
- | |_//\_<A HREF="Spouse2.htm">Spouse2</A> & m2date @ m2place
- | | <A HREF="Family#I.htm"><I>family info</i></A>
- | |_____ <A HREF="m2child1.htm">m2child1</A> * m2child1birthdate + m2child1birthdate
- | |_____ <A HREF="m2childN.htm">m2childN</A> * m2childNbirthdate + m2child2birthdate
- |
- |_//\_<A HREF="Spousen.htm">Spousen</A> & mNdate @ mNplace
- | <A HREF="Family#I.htm"><I>family info</i></A>
- |_____ <A HREF="mNchild1.htm">mNchild1</A> * mNchild1birthdate + mNchild1birthdate
- |_____ <A HREF="mNchildN.htm">mNchildN</A> * mNchildNbirthdate + mNchildNbirthdate
- </TT><PRE>
- <HR>
- <H3>Ancestors of <I>Person</I></H3>
- <TT>
- - <A HREF="GreatGrandFather.htm"><B>GreatGrandFather</B></A> (FFF) * birthdate + deathdate
- - <A HREF="GrandFather.htm"><B>GrandFather</B></A> (FF) * birthdate + deathdate
- - <A HREF="GreatGrandMother.htm"><I>GreatGrandMother</I></A> (FFM) * birthdate + deathdate
- - <A HREF="Father.htm"><B>Father</B></A> (F) * birthdate + deathdate
- - <A HREF="GreatGrandFather.htm"><B>GreatGrandFather</B></A> (FMF) * birthdate + deathdate
- - <A HREF="GrandMother.htm"><I>GrandMother</I></A> (FM) * birthdate + deathdate
- - <A HREF="GreatGrandMother.htm"><I>GreatGrandMother</I></A> (FMM) * birthdate + deathdate
- Person * birthdate + deathdate
- - <A HREF="GreatGrandFather.htm"><B>GreatGrandFather</B></A> (MFF) * birthdate + deathdate
- - <A HREF="GrandFather.htm"><B>GrandFather</B></A> (MF) * birthdate + deathdate
- - <A HREF="GreatGrandMother.htm"><I>GreatGrandMother</I></A> (MFM) * birthdate + deathdate
- - <A HREF="Mother.htm"><I>Mother</I></A> (M) * birthdate + deathdate
- - <A HREF="GreatGrandFather.htm"><B>GreatGrandFather</B></A> (MMF) * birthdate + deathdate
- - <A HREF="GrandMother.htm"><I>GrandMother</I></A> (MM) * birthdate + deathdate
- - <A HREF="GreatGrandMother.htm"><I>GreatGrandMother</I></A> (MMM) * birthdate + deathdate
- </TT></PRE>
- <HR>
- <H3>
- <PRE><TT>
- a template to represent Genealogy data in HTML hypertext.
- * replace all ocurrences of each appropriate ITEM with ACTUAL DATA
- e.g. search-replace-all Person with: My Name
- e.g. query-search-replace Mother with: My Mother's Name
- * judiciously edit .htm file names in anchors
- * add/remove lines for children, siblings, spouses as necessary
- <BR>
- bugs: I'm assuming more than 8 char file names (works in UNIX & my Amiga)
- </TT></PRE>
- </H3>
- </HTML>
- ############### end genealogytemplate.html #####################################
-
- * In an HTML file (maybe HOME PAGE) have an anchor pointing to GenealogyFile:
-
- <A href="file://localhost/Genea:DBNAMEG/GENEAFIL.htm">
- Genealogy</A>
-
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- ^^ assumes you ran 'rx Scion2html.rexx Normal' in directory: Doc:HTMLGenea ^^
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
- * You might also create an {MyGenealogy}.htm file yourself in directory
- * Genea:DBNAMEG as a starting point, with the anchor of
-
- <A href="file://localhost/Genea:DBNAMEG/MyGENEAFIL.htm">My Genealogy</A>
-
- e.g.:
- _____________________________________________________________
-
- <TITLE>FirstName LastName Genealogy </TITLE>
- <H1>FirstName LastName Genealogy</H1>
- <HR>
- <A HREF="GENEAFIL.htm">(List of persons).</A><P>
-
- This is the genealogy of <A href="P1.htm">FirstName LastName</A>.
- _____________________________________________________________
- ^^^^^^^^^^^^^^
- * Note the convention of first 2 characters from FirstName
- * first 4 characters from LastName
- * & BirthDate (with all blanks removed)
- *
- * If the BirthDate is not entered, the convention is:
- * first 2 characters from FirstName
- * first 6 characters from LastName
- * & ScionGenealogist IRN
- *
-
- * The PN{IRN}.DBNAME files are used to generate the "more info" files.
-
- * PP & FP Notes: (personal & family pictures; picture albums)
- * ScionGenealogist names pictures as;
- * PP{IRN}.DBNAME (personal) and FP{mFGRN}.DBNAME (family)
- * {P|F}P{IRN|mFGRN}.DBNAME now used as pictures & links.
- * GfxCon is used to copy/reduce jpegs from {P|F}P{IRN|mFGRN}.DBNAME
- * reductions are anchors pointing to html's for pictures albums
- * reductions in pictures albums are anchors pointing to pictures
- * picture albums will not be overwritten; they may be updated with
- * additional pictures; links to other pictures, etc.
- * Whenever {P|F}P{IRN|mFGRN}.DBNAME is changed or replaced,
- * the corresponding jpegs will be updated
- * {P|F}P{IRN|mFGRN}.DBNAMEA may be any legal GfxCon input picture FORMAT
- * (ILBM,RGB8,PCX,BMP,RLE8,TIFF,Targa,LBM,RGBN,IMG,RLE4,GIF,JPEG,RGB-Raw)
-
- * Whenever the PN{IRN}.DBNAME is changed or replaced, the corresponding
- * "more info" file will be updated if 'rx Scion2html.rexx {IRN}' is re-run.
-
- */
-
- /* add libraries */
- libs = 'rexxsupport.library rexxarplib.library'
- DO i = 1 TO Words(libs)
- lib = Word(libs,i)
- IF ~Show('Lib',lib) THEN DO
- IF EXISTS('LIBS:'lib) then call addlib lib, 0, -30
- ELSE DO
- 'message "===> cannot find' lib 'in LIBS:"'
- EXIT 10
- END
- END
- END i
-
- SAY ' '
- SAY ' Scion2html.rexx © Harold H. Ipolyi'
- SAY ' '
-
- DoPictures = EXISTS("Sys:Tools/GfxCon")
-
- IF ~DoPictures THEN DO
- SAY ' '
- say 'GfxCon not found in Sys:Tools - unable to include pictures'
- END
-
- Address "SCIONGEN" /* Point at Scion Genealogist port */
- options RESULTS
-
- IF Show(p,'SCIONGEN') THEN DO
- 'GETDBNAME' /* Issue GET DB NAME command to Scion Genealogist */
- DBNAME = RESULT
- END
-
- PARSE ARG target
- target = Upper(strip(target,,'"')) /* just in case, remove errant quotes */
-
- DO WHILE target = '' | target = '?' | target = 'INFO' | target = 'HELP'
- SAY ' '
- SAY ' please send comments, questions to:'
- SAY ' '
- SAY ' ipolyi@pat.mdc.com'
- SAY ' or:'
- SAY ' Harold H. Ipolyi '
- SAY ' P.O.Box 891206 '
- SAY ' Houston, Tx 77289-1206 '
- SAY ' _________________________________________________________'
- SAY ' / \'
- SAY ' [re]create html hypertext from ScionGenealogist data base '
- SAY ' \_________________________________________________________/'
- SAY ' '
- SAY ' Usage: start ScionGenealogist, load a genealogy database;'
- SAY ' '
- SAY ' start a Shell;'
- SAY ' '
- SAY ' cd to a target directory; and execute:'
- SAY ' '
- SAY ' i.e. wherein directory of html''s will/does exist'
- SAY ' '
- SAY ' rx Scion2html.rexx Normal -> recreates all .htm files'
- SAY ' or:'
- SAY ' rx Scion2html.rexx IRN -> specific P{IRN}.htm file'
- SAY ' '
- IF DBNAME = "DBNAME" THEN EXIT
- /* EXIT
- END
- */
- SAY ' Enter "Normal" to recreate all P#.htm files; or'
- SAY ' '
- SAY ' a 'DBNAME' Scion data base "IRN" to recreate a specific P{IRN}.htm file.'
- SAY ' '
- PULL target
-
- target = Upper(strip(target,,'"')) /* just in case, remove errant quotes */
- END
-
- IF target = '' | target = 'Q' | target = 'EXIT' | target = 'QUIT' THEN
- EXIT
-
- IF ~Show(p,'SCIONGEN') THEN DO
- SAY ' '
- SAY ' Cannot proceed because ScionGenealogist is NOT currently running:'
- SAY ' '
- SAY ' 1. Please start ScionGenealogist and'
- SAY ' '
- SAY ' 2. load the desired data base. Then:'
- SAY ' '
- SAY ' 3. rx Scion2html.rexx Normal OR rx Scion2html.rexx IRN'
- SAY ' '
- EXIT
- END
-
- IF target = 'N' THEN
- target = 'NORMAL'
- IF target = 'T' THEN
- target = 'TEST'
-
- /* SAY target */
-
- 'GETPROGVERSION'
- VERSION = RESULT
-
- IF VERSION < 3.13 THEN DO
- SAY ' '
- say ' Requires VERSION = 3.13 or greater'
- SAY ' '
- EXIT
- END
- /* ??? GETDBDIRPATH ??? of Scion data base */
-
- SAY ' '
- Say ' Testing: is data base assignment of Genealogy:'DBNAME' visible?'
- SAY ' '
-
- PRAGMA('w','n')
- IF ~Exists("Genealogy:"DBNAME) THEN DO
- SAY ' Genealogy:'DBNAME' not found,'
- SAY ' '
- SAY " Please create an assign to data base "DBNAME"'s directory:"
- SAY ' '
- SAY ' assign Genealogy: {Volume:Directory}'
- SAY ' '
- EXIT
- END
- PRAGMA('w','w')
-
- Gdir = DBNAME'G'
- Tdir = DBNAME'T'
-
- IF ~Makedir(Gdir) THEN DO
- SAY ' '
- SAY ' ===> unable to create directory: 'Gdir
- SAY ' '
- EXIT
- END
-
- IF ~Makedir(Tdir) THEN DO
- SAY ' '
- SAY ' ===> unable to create directory: 'Tdir
- SAY ' '
- EXIT
- END
-
-
- 'GETTOTALIRN' /* Issue command to Scion Genealogist */
- TOTALIRN = RESULT
-
- Say "Number of people in database " DBNAME " = " TOTALIRN
- SAY ' '
-
- 'GETPERSLABEL' 1
- PERSLABEL1 = RESULT
- 'GETPERSLABEL' 2
- PERSLABEL2 = RESULT
- 'GETPERSLABEL' 3
- PERSLABEL3 = RESULT
- 'GETFAMLABEL' 1
- FAMLABEL1 = RESULT
- 'GETFAMLABEL' 2
- FAMLABEL2 = RESULT
- IF IsNumeric(target) THEN
- DO
- Say 'Processing person ' target ' of ' TOTALIRN ' in database ' DBNAME
-
- IF target <= TOTALIRN THEN DO
- /* Open('GenealogyText' @,Tdir'/GenealogyOf'target,'w') */
- Open('GenealogyText',Tdir'/G'target,'w')
- CALL MakeOne(target,0)
- Close('GenealogyText')
- END
- END
- ELSE
- DO
- target = Upper(target)
- IF target = "TEST" THEN DO
-
- DO i = 1 TO 7
- /* Open('GenealogyText',Tdir'/GenealogyOf'i,'w') */
- Open('GenealogyText',Tdir'/G'i,'w')
- CALL MakeOne(i,0)
- Close('GenealogyText')
- END
- END
- ELSE
- DO
- Say "Processing all " TOTALIRN " persons in database " DBNAME
-
- /* GENEAFIL.htm is a Scion data base IRN order list of all persons in
- html format:
-
- person * birthdate + deathdate (()) father //\ mother */
-
- Say 'file name: 'Gdir'/GENEAFIL.htm for: List of Persons.'
-
- Open('GenealogyFile',Gdir'/GENEAFIL.htm','w')
- WriteLn('GenealogyFile','<HTML>')
- WriteLn('GenealogyFile','<TITLE>List of Persons.</TITLE>')
- WriteLn('GenealogyFile','<H2>List of Persons in data base "'DBNAME'". <B>'Time()' - 'Date()'</B></H2>')
- WriteLn('GenealogyFile','<H3>')
-
- Open('GenealogyText',Tdir'/GenealogyOf'DBNAME,'w')
- WriteLn('GenealogyText','Genealogy Data Base "'GetLastName(DBNAME)'"')
- WriteLn('GenealogyText','')
- WriteLn('GenealogyText','-----------------------------------------------------------')
- WriteLn('GenealogyText','')
-
- DO i = 1 TO TOTALIRN
- CALL MakeOne(i,1)
- END
- WriteLn('GenealogyFile','</H3>')
- WriteLn('GenealogyFile','<HR>')
- WriteLn('GenealogyFile','<Address>')
- 'GETPROGVERSION'
- VERSION = RESULT
- WriteCh('GenealogyFile','<H3>ScionGenealogist')
- IF VERSION > 0 THEN WriteCh('GenealogyFile',' V 'VERSION)
- WriteLn('GenealogyFile',' © Robbie J Akins; ')
- WriteLn('GenealogyFile','Scion'VERSION'2html.rexx © Harold Ipolyi</H3>')
- WriteLn('GenealogyFile','</Address>')
- WriteLn('GenealogyFile','</HTML>')
- END
- Say ' '
- ThisPath = PRAGMA('d')
- IF Substr(ThisPath,Length(ThisPath),Length(ThisPath)) ~= ":" THEN ThisPath = ThisPath'/'
- Say ' ---------------------------------------------------------------------'
- Say ' If you have not already done so, add the following anchor pointing to'
- Say ' "'GetLastName(DBNAME)' Genealogy" to a html file (maybe HOME PAGE): '
- Say ' ---------------------------------------------------------------------'
- Say ' <A href="/'ThisPath||Gdir'/GENEAFIL.htm">'GetLastName(DBNAME)' Genealogy</A>'
- Say ' ---------------------------------------------------------------------'
- Say ' and maybe: <A href="/'ThisPath||Gdir'/P1.htm">my Genealogy</A>'
- Say ' ---------------------------------------------------------------------'
- END
- SAY ' '
- Say 'Scion2html.rexx completed normally'
- EXIT
-
- /*************************************************************************/
-
- MakeOne: PROCEDURE EXPOSE target DBNAME Gdir Tdir DoPictures FAMLABEL1 FAMLABEL2 PERSLABEL1 PERSLABEL2 PERSLABEL3
- PARSE ARG ScionIRN, EndOfFile
- 'EXISTPERSON' ScionIRN
- /**/
- if RESULT = 'YES' THEN DO
- /**/
- HasFileFATHER = 0
- HasFileMOTHER = 0
- HasMOTHER = 0
- HasFATHER = 0
- HasPARENTS = 0
- HasCHILDREN = 0
- DoGenText = 0
- 'GETPARENTS' ScionIRN
- PARENTS = RESULT
- tPARENTSt = 't'PARENTS't'
- /* Say 'PARENTS = 'PARENTS tPARENTSt ??? EXISTPARENTS IRN ??? */
- IF tPARENTSt ~= 'tt' THEN HasPARENTS = 1
- 'GETMARRIAGE' ScionIRN 0 /* ??? GETTOTMARRIAGES IRN ??? */
- MARRIAGE = RESULT
- tMARRIAGESt = 't'MARRIAGE't'
- /* Say 'MARRIAGES = 'MARRIAGE tMARRIAGESt */
- IF tMARRIAGESt ~= 'tMARRIAGEt' THEN DO
- mFGRN = MARRIAGE
- 'GETCHILD' mFGRN 0 /* ??? GETTOTCHILDREN FGRN ??? */
- 'EXISTPERSON' RESULT
- if RESULT = 'YES' then HasCHILDREN = 1
- END
- /*
- Say 'PARENTS = 'PARENTS tPARENTSt 'MARRIAGES = 'MARRIAGES tMARRIAGESt 'HasPARENTS = 'HasPARENTS 'HasCHILDREN = 'HasCHILDREN
- */
- IF ( HasPARENTS + HasCHILDREN ) = 1 THEN DoGenText = 1
- /**/
- 'GETLASTNAME' ScionIRN
- LASTNAME = GetLastName(RESULT)
- 'GETFIRSTNAME' ScionIRN
- FIRSTNAME = RESULT
- 'GETSEX' ScionIRN
- GENDER = translate(RESULT,xrange('a','z'),xrange('A','Z'))
- thelastname = LASTNAME
- thegender = GENDER
- FULLNAME = GetFullName(FIRSTNAME)
- MFULLNAME = MGetFullName(FIRSTNAME)
- PFULLNAME = PGetFullName(FIRSTNAME)
- 'GETBIRTHDATE' ScionIRN
- BIRTHDATE = RESULT
- 'GETBIRTHPLACE' ScionIRN
- BIRTHPLACE = RESULT
- 'GETDEATHDATE' ScionIRN
- DEATHDATE = RESULT
- 'GETDEATHPLACE' ScionIRN
- DEATHPLACE = RESULT
- 'GETBURIALPLACE' ScionIRN
- BURIALPLACE = RESULT
- 'GETPERSUSER1' ScionIRN
- PERSUSER1 = CheckForReplacement(RESULT)
- PERSUSERn1 = CheckForNAReplacement(RESULT)
- 'GETPERSUSER2' ScionIRN
- PERSUSER2 = CheckForReplacement(RESULT)
- PERSUSERn2 = CheckForNAReplacement(RESULT)
- 'GETPERSUSER3' ScionIRN
- PERSUSER3 = CheckForReplacement(RESULT)
- PERSUSERn3 = CheckForNAReplacement(RESULT)
- IF target ~= "NORMAL" | BIRTHPLACE ~= "" | DEATHPLACE ~= "" | BURIALPLACE ~= "" | PERSUSER1 ~= "" | PERSUSER2 ~= "" | PERSUSER3 ~= "" THEN DoGenText = 1
- /**/
- IF LASTNAME = "" THEN DO
- Say "Person " ScionIRN"'s last name is not defined; no new html file being created!"
- RETURN
- END
- /* Say "Person "'P'ScionIRN */
- PfilN = 'P'ScionIRN
- /**/
- dPfilN = Gdir'/'PfilN
- Say ''
- Say 'html: 'dPfilN'.htm for: 'FULLNAME' {'ScionIRN'}'
- Open('PERSONFILE',dPfilN'.htm','w')
- WriteLn('PERSONFILE','<HTML>')
- WriteLn('PERSONFILE','<TITLE>'FULLNAME' Data Sheet</TITLE>')
- /**/
- IF Exists('Genealogy:PP'ScionIRN'.'DBNAME) & DoPictures THEN DO
- /**/
- IF Exists(dPfilN'.jpg') THEN DO
- Parse value StateF(dPfilN'.jpg') with type size blk bits PJday PJmin PJtick com
- Parse value StateF('Genealogy:PP'ScionIRN'.'DBNAME) with type size blk bits PPday PPmin PPtick com
- Say 'Genealogy:PP'ScionIRN'.'DBNAME PPday PPmin PPtick dPfilN'.jpg' PJday PJmin PJtick
- IF ( PPday > PJday ) | ( PPday = PJday & PPmin > PJmin ) THEN DO
- Delete(dPfilN'.jpg')
- Delete(dPfilN'.gif')
- Say 'Scion file Genealogy:PP'ScionIRN'.'DBNAME 'newer; replacing 'dPfilN'.jpg'
- END
- END
- /**/
- WriteCh('PERSONFILE','<A HREF="'PfilN'A.htm')
- WriteLn('PERSONFILE','"><img src="'PfilN'.gif"></A>')
- END
- /**/
- WriteCh('PERSONFILE','<H2>'MFULLNAME)
- /**/
- IF Exists('Genealogy:PN'ScionIRN'.'DBNAME) THEN DO
- Say 'Writing info file 'dPfilN'I.htm'
- Open('PNDBNAME','Genealogy:PN'ScionIRN'.'DBNAME,'r')
- Open('PERSONI',dPfilN'I.htm','w')
- WriteLn('PERSONI','<HTML>')
- WriteLn('PERSONI','<TITLE>'FULLNAME' Information</TITLE>')
- WriteCh('PERSONI','<A HREF="'PfilN'.htm">'MFULLNAME)
- WriteCh('PERSONI','</A> Information. (<A HREF="GENEAFIL.htm">')
- WriteLn('PERSONI','<B>List of persons.</B></A>)</H2><PRE><TT>')
- IF DoGenText THEN WriteLn('GenealogyText',PFULLNAME' Information.')
- DO While ~EOF('PNDBNAME')
- line = ReadLn('PNDBNAME')
- WriteLn('PERSONI',CheckForReplacement(line))
- IF DoGenText THEN WriteLn('GenealogyText',CheckForNAReplacement(line))
- END
- Close('PNDBNAME')
- IF DoGenText THEN WriteLn('GenealogyText','')
- WriteLn('PERSONI','</HTML>')
- Close('PERSONI')
- WriteCh('PERSONFILE',' (<A HREF="'PfilN'I.htm"><B>more info</B></A>)')
- END
- /**/
- IF Exists('Genealogy:PP'ScionIRN'.'DBNAME) & DoPictures THEN DO
- /**/
-
- IF Exists(dPfilN'.jpg') THEN DO
- Say 'Leaving picture 'dPfilN'.jpg unmodified'
- END
- ELSE DO
- Say 'Creating picture 'dPfilN'.jpg'
- /*
- Say 'Sys:Tools/GfxCon Genealogy:PP'ScionIRN'.'DBNAME' TO 'dPfilN'.jpg FORMAT JPEG QUALITY 100'
- */
- address command 'Sys:Tools/GfxCon Genealogy:PP'ScionIRN'.'DBNAME' TO 'dPfilN'.jpg FORMAT JPEG QUALITY 100'
- END
- IF Exists(dPfilN'.gif') THEN DO
- Say 'Leaving image 'dPfilN'.gif unmodified'
- END
- ELSE DO
- Say 'Creating image 'dPfilN'.gif'
- /*
- Say 'Sys:Tools/GfxCon Genealogy:PP'ScionIRN'.'DBNAME' TO 'dPfilN'.gif FORMAT GIF BOXFIT 120 120'
- */
- address command 'Sys:Tools/GfxCon Genealogy:PP'ScionIRN'.'DBNAME' TO 'dPfilN'.gif FORMAT GIF BOXFIT 120 120'
- END
- WriteCh('PERSONFILE',' (<A HREF="'PfilN'A.htm"><B>Picture Album</B></A>)')
- IF Exists(dPfilN'A.htm') THEN DO
- Say 'Leaving picture album 'dPfilN'A.htm unmodified'
- END
- ELSE DO
- Say 'Creating picture album 'dPfilN'A.htm'
- Open('PERSONP',dPfilN'A.htm','w')
- WriteLn('PERSONP','<HTML>')
- WriteLn('PERSONP','<TITLE>'FULLNAME' Picture Album</TITLE>')
- WriteCh('PERSONP',MFULLNAME' . ')
- WriteCh('PERSONP','<A HREF="'PfilN'.jpg">')
- WriteLn('PERSONP','<img src="'PfilN'.gif"></A>')
- WriteLn('PERSONP',' . <B>Picture Album</B><HR>')
- WriteCH('PERSONP','<H3>another JPEG picture <A HREF="'PfilN'a1.jpg"><img src="')
- WriteLn('PERSONP',PfilN'a1.gif"></A> anchored by image')
- WriteLn('PERSONP',' created by:<P>GfxCon 'dPfilN'a1.jpg TO 'dPfilN'a1.gif FORMAT ')
- WriteLn('PERSONP','JPEG QUALITY 33 BOXFIT 120 120<HR>')
- WriteLn('PERSONP','Edit 'dPfilN'A.htm to add more pictures to the Picture Album<P>')
- WriteCH('PERSONP','<B>CAUTION</B>: deleting Directory: 'Gdir' destroys all Picture ')
- WriteLn('PERSONP',' Album modifications. YOUR WORK WILL BE LOST!</H3>')
- WriteLn('PERSONP','</HTML>')
- Close('PERSONP')
- END
- END
- /**/
- WriteLn('PERSONFILE',' (<A HREF="GENEAFIL.htm"><B>List of persons.
- </B></A>)')
- WriteLn('PERSONFILE','<PRE><TT>')
- IF DoGenText THEN DO
- /* IF target ~= "NORMAL" THEN Say 'Printable file: 'Tdir'/GenealogyOf'ScionIRN' for 'FULLNAME' {'ScionIRN'}' */
- IF target ~= "NORMAL" THEN Say 'Printable file: 'Tdir'/G'ScionIRN' for 'FULLNAME' {'ScionIRN'}'
- WriteLn('GenealogyText','')
- WriteLn('GenealogyText','-----------------------------------------------------------')
- WriteLn('GenealogyText','')
- WriteLn('GenealogyText',PFULLNAME' Data Sheet')
- END
- IF BIRTHDATE || BIRTHPLACE ~= "" THEN DO
- WriteCh('PERSONFILE','Born: ')
- IF BIRTHDATE ~= "" THEN WriteCh('PERSONFILE',BIRTHDATE)
- IF BIRTHPLACE ~= "" THEN WriteCh('PERSONFILE',' * 'BIRTHPLACE)
- WriteLn('PERSONFILE','')
- IF BIRTHDATE ~= "" THEN IF DoGenText THEN WriteCh('GenealogyText','Born: 'BIRTHDATE)
- IF BIRTHPLACE ~= "" THEN IF DoGenText THEN WriteCh('GenealogyText',' * 'BIRTHPLACE)
- IF DoGenText THEN WriteLn('GenealogyText','')
- END
- IF DEATHDATE ~= "" THEN DO
- WriteCh('PERSONFILE','Died: 'DEATHDATE' + 'DEATHPLACE)
- IF DoGenText THEN WriteCh('GenealogyText','Died: 'DEATHDATE' + 'DEATHPLACE)
- IF BURIALPLACE ~= "" THEN DO
- WriteCh('PERSONFILE',' . Buried: 'BURIALPLACE)
- IF DoGenText THEN WriteCh('GenealogyText',' . Buried: 'BURIALPLACE)
- END
- WriteLn('PERSONFILE','')
- IF DoGenText THEN WriteLn('GenealogyText','')
- END
- ELSE DO
- IF DEATHPLACE ~= "" THEN DO
- WriteLn('PERSONFILE',DEATHPLACE)
- IF DoGenText THEN WriteLn('GenealogyText',DEATHPLACE)
- END
- IF BURIALPLACE ~= "" THEN DO
- WriteLn('PERSONFILE',BURIALPLACE)
- IF DoGenText THEN WriteLn('GenealogyText',BURIALPLACE)
- END
- END
- IF PERSUSER1 ~= "" THEN DO
- WriteLn('PERSONFILE',PERSLABEL1': 'PERSUSER1)
- IF DoGenText THEN WriteLn('GenealogyText',PERSLABEL1': 'PERSUSERn1)
- END
- IF PERSUSER2 ~= "" THEN DO
- WriteLn('PERSONFILE',PERSLABEL2': 'PERSUSER2)
- IF DoGenText THEN WriteLn('GenealogyText',PERSLABEL2': 'PERSUSERn2)
- END
- IF PERSUSER3 ~= "" THEN DO
- WriteLn('PERSONFILE',PERSLABEL3': 'PERSUSER3)
- IF DoGenText THEN WriteLn('GenealogyText',PERSLABEL3': 'PERSUSERn3)
- END
-
- /* end of personal data; start family tree segment */
-
- /* WriteLn('PERSONFILE','<PRE><TT>') */
- WriteLn('PERSONFILE','<HR>')
- IF DoGenText THEN DO
- WriteLn('GenealogyText','')
- WriteLn('GenealogyText','-----------------------------------------------------------')
- WriteLn('GenealogyText','')
- END
- WriteLn('PERSONFILE','<LI>Immediate Family of 'MFULLNAME)
- IF DoGenText THEN DO
- WriteLn('GenealogyText','Immediate Family of 'PFULLNAME)
- WriteLn('GenealogyText','')
- END
- /**/
- IF HasPARENTS THEN DO
- 'GETPRINCIPAL' PARENTS
- PRINCIPAL = RESULT
- 'GETSPOUSE' PARENTS
- SPOUSE = RESULT
- 'GETMARRYDATE' PARENTS
- PARENTSMARRIAGEDATE = RESULT
- 'GETMARRYPLACE' PARENTS
- PARENTSmFGRNPLACE = RESULT
- 'GETFAMUSER1' PARENTS
- PARENTSmFGRNCELEBRANT = CheckForReplacement(RESULT)
- PARENTSnmFGRNCELEBRANT = CheckForNAReplacement(RESULT)
- 'GETFAMUSER2' PARENTS
- PARENTSmFGRNCOMMENT = CheckForReplacement(RESULT)
- PARENTSnmFGRNCOMMENT = CheckForNAReplacement(RESULT)
- 'GETSEX' PRINCIPAL
- IF RESULT = 'M' THEN
- DO
- FATHERScionIRN = PRINCIPAL
- MOTHERScionIRN = SPOUSE
- END
- ELSE
- DO
- FATHERScionIRN = SPOUSE
- MOTHERScionIRN = PRINCIPAL
- END
- 'GETLASTNAME' FATHERScionIRN
- FATHERLASTNAME = GetLastName(RESULT)
- 'GETFIRSTNAME' FATHERScionIRN
- FATHERFIRSTNAME = RESULT
- IF FATHERFIRSTNAME ~= "" | FATHERLASTNAME ~= "" THEN HasFATHER = 1
- thelastname = FATHERLASTNAME
- thegender = "m"
- FATHERFULLNAME = GetFullName(FATHERFIRSTNAME)
- MFATHERFULLNAME = MGetFullName(FATHERFIRSTNAME)
- PFATHERFULLNAME = PGetFullName(FATHERFIRSTNAME)
- 'GETBIRTHDATE' FATHERScionIRN
- FATHERBIRTHDATE = RESULT
- 'GETLASTNAME' MOTHERScionIRN
- MOTHERLASTNAME = GetLastName(RESULT)
- 'GETFIRSTNAME' MOTHERScionIRN
- MOTHERFIRSTNAME = RESULT
- IF MOTHERFIRSTNAME ~= "" | MOTHERLASTNAME ~= "" THEN HasMOTHER = 1
- thelastname = MOTHERLASTNAME
- thegender = "f"
- MOTHERFULLNAME = GetFullName(MOTHERFIRSTNAME)
- MMOTHERFULLNAME = MGetFullName(MOTHERFIRSTNAME)
- PMOTHERFULLNAME = PGetFullName(MOTHERFIRSTNAME)
- 'GETBIRTHDATE' MOTHERScionIRN
- MOTHERBIRTHDATE = RESULT
- /**/
- IF FATHERLASTNAME ~= "" THEN DO
- HasFileFATHER = 1
- FATHERFILENAME = 'P'FATHERScionIRN
- END
- /**/
- IF MOTHERLASTNAME ~= "" THEN DO
- HasFileMOTHER = 1
- MOTHERFILENAME = 'P'MOTHERScionIRN
- END
- /**/
- WriteCh('PERSONFILE',' ')
- IF HasFileFATHER THEN WriteCh('PERSONFILE','<A HREF="'FATHERFILENAME'.htm">')
- WriteCh('PERSONFILE',MFATHERFULLNAME)
- IF HasFileFATHER THEN WriteCh('PERSONFILE','</A> //\ ')
- IF HasFileMOTHER THEN WriteCh('PERSONFILE','<A HREF="'MOTHERFILENAME'.htm">')
- WriteCh('PERSONFILE',MMOTHERFULLNAME)
- IF HasFileMOTHER THEN WriteCh('PERSONFILE','</A>')
- /**/
- IF PARENTSMARRIAGEDATE ~= "" THEN
- WriteCh('PERSONFILE',' & 'PARENTSMARRIAGEDATE)
- IF PARENTSmFGRNPLACE ~= "" THEN
- WriteCh('PERSONFILE',' @ 'PARENTSmFGRNPLACE)
- /**/
- WriteLn('PERSONFILE','')
- IF DoGenText THEN DO
- WriteCh('GenealogyText',' 'PFATHERFULLNAME' //\ 'PMOTHERFULLNAME)
- IF PARENTSMARRIAGEDATE ~= "" THEN WriteCh('GenealogyText',' & 'PARENTSMARRIAGEDATE)
- IF PARENTSmFGRNPLACE ~= "" THEN WriteCh('GenealogyText',' @ 'PARENTSmFGRNPLACE)
- WriteLn('GenealogyText','')
- END
- spcs = ' |'
- DO i = 0 TO Length(FATHERFULLNAME)
- spcs = spcs' ' /* ??? GETFAMLBL1 ??? */
- END /* ??? GETFAMLBL2 ??? */
- /**/
- FfilN = Gdir'/F'PARENTS
- IF Exists(FfilN'I.htm') THEN DO
- IF Exists('Genealogy:FN'PARENTS'.'DBNAME) THEN DO
- Parse value StateF(FfilN'I.htm') with type size blk bits PFday PFmin PFtick com
- Parse value StateF('Genealogy:FN'PARENTS'.'DBNAME) with type size blk bits PNday PNmin PNtick com
- /* Say PfilN'I.htm' PFday PFmin PFtick 'Genealogy:FN'PARENTS'.'DBNAME PNday PNmin PNtick */
- IF ( PNday > PFday ) | ( PNday = PFday & PNmin > PFmin ) THEN DO
- Delete(FfilN'I.htm')
- Say 'Scion file Genealogy:FN'PARENTS'.'DBNAME 'newer; replacing 'FfilN'I.htm'
- END
- END
- END
- /**/
- Minfo = 0
- IF Exists(FfilN'I.htm') THEN
- Minfo = 1
- /* WriteCh('PERSONFILE',' (<A HREF="'PfilN'I.htm"><B>more info</B></A>)') */
- ELSE DO
- IF Exists('Genealogy:FN'PARENTS'.'DBNAME) THEN DO
- Minfo = 1
- Say 'Writing info file'FfilN'I.htm'
- Open('FNDBNAME','Genealogy:FN'PARENTS'.'DBNAME,'r')
- Open('FAMILYI',FfilN'I.htm','w')
- WriteLn('FAMILYI','<HTML>')
- WriteLn('FAMILYI','<TITLE>'FATHERFULLNAME' Family Information</TITLE>')
- WriteCh('FAMILYI','<H2>(<A HREF="GENEAFIL.htm">')
- WriteLn('FAMILYI','<B>List of persons.</B></A>)</H2><PRE><TT>')
- DO While ~EOF('FNDBNAME')
- line = ReadLn('FNDBNAME')
- WriteLn('FAMILYI',line)
- END
- Close('FNDBNAME')
- WriteLn('FAMILYI','</HTML>')
- Close('FAMILYI')
- /* WriteCh('PERSONFILE',' (<A HREF="'PfilN'I.htm"><B>more info</B></A>)') */
- END
- END
- /**/
- IF PARENTSmFGRNCELEBRANT ~= '' | Minfo THEN DO
- WriteCh('PERSONFILE',spcs)
- IF Minfo THEN
- WriteCh('PERSONFILE','(<A HREF="F'PARENTS'I.htm"><B>family info</B></A>) ')
- IF PARENTSmFGRNCELEBRANT ~= '' THEN DO
- WriteCh('PERSONFILE',FAMLABEL1': 'PARENTSmFGRNCELEBRANT)
- IF DoGenText THEN WriteLn('GenealogyText',spcs||FAMLABEL1': 'PARENTSnmFGRNCELEBRANT)
- END
- WriteLn('PERSONFILE','')
- END
- IF PARENTSmFGRNCOMMENT ~= '' THEN DO
- WriteLn('PERSONFILE',spcs' 'FAMLABEL2': 'PARENTSmFGRNCOMMENT)
- IF DoGenText THEN WriteLn('GenealogyText',spcs' 'FAMLABEL2': 'PARENTSnmFGRNCOMMENT)
- END
- DO i = 0 TO 39 /* ??? GETTOTCHILDREN FGRN ??? */
- 'GETCHILD' PARENTS i
- PARENTSc = RESULT
- 'GETFIRSTNAME' PARENTSc
- PARENTScFIRSTNAME = RESULT
- /**/
- IF PARENTScFIRSTNAME ~= "" THEN DO
- IF PARENTSc ~= ScionIRN THEN DO
- 'GETLASTNAME' PARENTSc
- PARENTScLASTNAME = GetLastName(RESULT)
- 'GETFIRSTNAME' PARENTSc
- PARENTScFIRSTNAME = RESULT
- 'GETSEX' PARENTSc
- PARENTScGENDER = translate(RESULT,xrange('a','z'),xrange('A','Z'))
- thelastname = PARENTScLASTNAME
- thegender = PARENTScGENDER
- PARENTScFULLNAME = GetFullName(PARENTScFIRSTNAME)
- MPARENTScFULLNAME = MGetFullName(PARENTScFIRSTNAME)
- PPARENTScFULLNAME = PGetFullName(PARENTScFIRSTNAME)
- 'GETBIRTHDATE' PARENTSc
- PARENTScBIRTHDATE = RESULT
- 'GETDEATHDATE' PARENTSc
- PARENTScDEATHDATE = RESULT
- /**/
- PARENTScFILENAME = 'P'PARENTSc
- /**/
- WriteCh('PERSONFILE',' |_____ <A HREF="'PARENTScFILENAME'.htm">')
- /**/
- IF PARENTScLASTNAME ~= FATHERLASTNAME THEN
- WriteCh('PERSONFILE',MPARENTScFULLNAME)
- ELSE DO
- IF PARENTScGENDER = "m" THEN WriteCh('PERSONFILE','<B>'PARENTScFIRSTNAME'</B>')
- IF PARENTScGENDER = "f" THEN WriteCh('PERSONFILE','<I>'PARENTScFIRSTNAME'</I>')
- END
- /**/
- WriteCh('PERSONFILE','</A> ')
- /**/
- IF PARENTScBIRTHDATE ~= "" THEN
- WriteCh('PERSONFILE',' * 'PARENTScBIRTHDATE)
- /**/
- IF PARENTScDEATHDATE ~= "" THEN
- WriteCh('PERSONFILE',' + 'PARENTScDEATHDATE)
- /**/
- WriteLn('PERSONFILE','')
- IF DoGenText THEN DO
- WriteCh('GenealogyText',' |_____ 'PPARENTScFULLNAME)
- IF PARENTScBIRTHDATE ~= "" THEN WriteCh('GenealogyText',' * 'PARENTScBIRTHDATE)
- IF PARENTScDEATHDATE ~= "" THEN WriteCh('GenealogyText',' + 'PARENTScDEATHDATE)
- WriteLn('GenealogyText','')
- END
- END
- END
- END
- END
- END
-
- /* end of parents, siblings segment; start marriages segment */
-
- vert.0 = ''
- vert.1 = ' |'
- DO i = 0 TO 39 /* ??? GETTOTMARRIAGES IRN ??? */
- 'GETMARRIAGE' ScionIRN i
- MARRIAGE = RESULT /* use: 'EXISTFAMILY' */
- IF MARRIAGE > -1 THEN DO
- MARRIAGES = i
- j = i + 1
- vert.j = vert.i vert.1
- END
- END
- tMARRIAGESt = 't'MARRIAGES't'
- /* Say 'MARRIAGES = 'MARRIAGES tMARRIAGESt */
-
- IF tMARRIAGESt ~= 'tMARRIAGESt' THEN DO
- WriteLn('PERSONFILE',' |')
- IF DoGenText THEN WriteLn('GenealogyText',' |')
- DO i = 0 TO MARRIAGES
- 'GETMARRIAGE' ScionIRN i
- mFGRN = RESULT
- IF mFGRN ~= "" THEN DO
- ki = MARRIAGES - i + 1
- IF ki ~= MARRIAGES + 1 THEN DO
- WriteLn('PERSONFILE',vert.ki)
- IF DoGenText THEN WriteLn('GenealogyText',vert.ki)
- END
- j = MARRIAGES + 1 - i
- 'GETSPOUSE' mFGRN
- SPOUSE = RESULT
- IF SPOUSE = ScionIRN THEN
- DO
- 'GETPRINCIPAL' mFGRN
- SPOUSE = RESULT
- END
- 'GETLASTNAME' SPOUSE
- SPOUSELASTNAME = GetLastName(RESULT)
- 'GETFIRSTNAME' SPOUSE
- SPOUSEFIRSTNAME = RESULT
- thelastname = SPOUSELASTNAME
- 'GETSEX' SPOUSE
- thegender = translate(RESULT,xrange('a','z'),xrange('A','Z'))
- SPOUSEFULLNAME = GetFullName(SPOUSEFIRSTNAME)
- MSPOUSEFULLNAME = MGetFullName(SPOUSEFIRSTNAME)
- PSPOUSEFULLNAME = PGetFullName(SPOUSEFIRSTNAME)
- 'GETBIRTHDATE' SPOUSE
- SPOUSEBIRTHDATE = RESULT
- 'GETMARRYDATE' mFGRN
- MARRIAGEDATE = RESULT
- 'GETMARRYPLACE' mFGRN
- mFGRNPLACE = RESULT
- 'GETFAMUSER1' mFGRN
- MARRIAGECELEBRANT = CheckForReplacement(RESULT)
- MARRIAGEnCELEBRANT = CheckForNAReplacement(RESULT)
- 'GETFAMUSER2' mFGRN
- MARRIAGECOMMENT = CheckForReplacement(RESULT)
- MARRIAGEnCOMMENT = CheckForNAReplacement(RESULT)
- /**/
- SPOUSEFILENAME = 'P'SPOUSE
- /**/
- IF i = 0 THEN DO
- WriteCh('PERSONFILE',' 'MFULLNAME' //\ ')
-
- IF SPOUSELASTNAME ~= "" THEN
- WriteCh('PERSONFILE','<A HREF="'SPOUSEFILENAME'.htm">')
-
- WriteCh('PERSONFILE',MSPOUSEFULLNAME)
-
- IF SPOUSELASTNAME ~= "" THEN
- WriteCh('PERSONFILE','</A>')
-
- IF DoGenText THEN DO
- WriteCh('GenealogyText',' 'PFULLNAME' //\ 'PSPOUSEFULLNAME)
- IF MARRIAGEDATE ~= "" THEN WriteCh('GenealogyText',' & 'MARRIAGEDATE)
- IF mFGRNPLACE ~= "" THEN WriteCh('GenealogyText',' @ 'mFGRNPLACE)
- WriteLn('GenealogyText','')
- END
- END
-
- ELSE DO
- WriteCh('PERSONFILE',vert.j'_ //\ ')
-
- IF SPOUSELASTNAME ~= "" THEN
- WriteCh('PERSONFILE','<A HREF="'SPOUSEFILENAME'.htm">')
-
- WriteCh('PERSONFILE',MSPOUSEFULLNAME)
-
- IF SPOUSELASTNAME ~= "" THEN
- WriteCh('PERSONFILE','</A>')
-
- IF DoGenText THEN DO
- WriteCh('GenealogyText',vert.j'_ //\ 'PSPOUSEFULLNAME)
- IF MARRIAGEDATE ~= "" THEN WriteCh('GenealogyText',' & 'MARRIAGEDATE)
- IF mFGRNPLACE ~= "" THEN WriteCh('GenealogyText',' @ 'mFGRNPLACE)
- WriteLn('GenealogyText','')
- END
- END
-
- IF MARRIAGEDATE ~= "" THEN
- WriteCh('PERSONFILE',' & 'MARRIAGEDATE)
- IF mFGRNPLACE ~= "" THEN
- WriteCh('PERSONFILE',' @ 'mFGRNPLACE)
-
- WriteLn('PERSONFILE','')
- jk = MARRIAGES - i
- spcs = vert.jk' | '
- /**/
- FfilN = Gdir'/F'mFGRN
- Minfo = 0
- IF Exists('Genealogy:FN'mFGRN'.'DBNAME) THEN DO
- Minfo = 1
- Say 'Writing info file 'FfilN'I.htm'
- Open('FNDBNAME','Genealogy:FN'mFGRN'.'DBNAME,'r')
- Open('FAMILYI',FfilN'I.htm','w')
- WriteLn('FAMILYI','<HTML>')
- WriteCh('FAMILYI','<TITLE>'MFULLNAME' //\ ')
- WriteLn('FAMILYI',MSPOUSEFULLNAME' Family Information</TITLE>')
- /**/
- IF Exists('Genealogy:FP'mFGRN'.'DBNAME) & DoPictures THEN DO
- /**/
- IF Exists(FfilN'.jpg') THEN DO
- Parse value StateF(FfilN'.jpg') with type size blk bits PJday PJmin PJtick com
- Parse value StateF('Genealogy:FP'mFGRN'.'DBNAME) with type size blk bits PPday PPmin PPtick com
- Say 'Genealogy:FP'mFGRN'.'DBNAME PPday PPmin PPtick FfilN'.jpg' PJday PJmin PJtick
- IF ( PPday > PJday ) | ( PPday = PJday & PPmin > PJmin ) THEN DO
- Delete(FfilN'.jpg')
- Delete(FfilN'.gif')
- Say 'Scion file Genealogy:FP'mFGRN'.'DBNAME 'newer; replacing 'FfilN'.jpg'
- END
- END
- /**/
- WriteCh('FAMILYI','<A HREF="F'mFGRN'A.htm')
- WriteCh('FAMILYI','"><img src="F'mFGRN'.gif"></A>')
- END
- /**/
- WriteCh('FAMILYI','<H2>Family of 'MFULLNAME' //\ ')
- WriteCh('FAMILYI',MSPOUSEFULLNAME)
- /**/
- IF Exists('Genealogy:FP'mFGRN'.'DBNAME) & DoPictures THEN DO
- /**/ IF Exists(FfilN'.jpg') THEN DO
- Say 'Leaving picture 'FfilN'.jpg unmodified'
- END
- ELSE DO
- Say 'Creating picture 'FfilN'.jpg'
- Say 'Sys:Tools/GfxCon Genealogy:FP'mFGRN'.'DBNAME' TO 'FfilN'.jpg FORMAT JPEG QUALITY 100'
- address command 'Sys:Tools/GfxCon Genealogy:FP'mFGRN'.'DBNAME' TO 'FfilN'.jpg FORMAT JPEG QUALITY 100'
- END
- IF Exists(FfilN'.gif') THEN DO
- Say 'Leaving image 'FfilN'.gif unmodified'
- END
- ELSE DO
- Say 'Creating image 'FfilN'.gif'
- Say 'Sys:Tools/GfxCon Genealogy:FP'mFGRN'.'DBNAME' TO 'FfilN'.gif FORMAT GIF BOXFIT 120 120'
- address command 'Sys:Tools/GfxCon Genealogy:FP'mFGRN'.'DBNAME' TO 'FfilN'.gif FORMAT GIF BOXFIT 120 120'
- END
- WriteCh('FAMILYI',' (<A HREF="F'mFGRN'A.htm')
- WriteCh('FAMILYI','"><B>Picture Album</B></A>)')
- IF Exists(FfilN'A.htm') THEN DO
- Say 'Leaving picture album 'FfilN'A.htm unmodified'
- END
- ELSE DO
- Say 'Creating picture album 'FfilN'A.htm'
- Open('FAMILYP',FfilN'A.htm','w')
- WriteLn('FAMILYP','<HTML>')
- WriteCh('FAMILYP','<TITLE>'MFULLNAME' //\ ')
- WriteCh('FAMILYP',MSPOUSEFULLNAME)
- WriteLn('FAMILYP',' Family Picture album</TITLE>')
- WriteCh('FAMILYP',MFULLNAME' //\ ')
- WriteCh('FAMILYP',MSPOUSEFULLNAME)
- WriteCh('FAMILYP',' <B>Family</B> . ')
- WriteCh('FAMILYP','<A HREF="F'mFGRN'.jpg">')
- WriteCh('FAMILYP','<img src="F'mFGRN'.gif"></A>')
- WriteLn('FAMILYP',' . <B>Picture Album</B><HR>')
- WriteCH('FAMILYP','another JPEG picture <A HREF="F'mFGRN'a1.jpg"><img src="')
- WriteLn('FAMILYP','F'mFGRN'a1.gif"></A> anchored by image')
- WriteLn('FAMILYP',' created by:<P>GfxCon 'FfilN'a1.jpg TO 'FfilN'a1.gif FORMAT ')
- WriteLn('FAMILYP','JPEG QUALITY 33 BOXFIT 120 120<HR>')
- WriteLn('FAMILYP','<B>Edit 'FfilN'A.htm to add more pictures to the Picture Album<P>')
- WriteCH('FAMILYP','CAUTION: deleting Directory: 'Gdir' destroys all Picture ')
- WriteLn('FAMILYP',' Album modifications. YOUR WORK WILL BE LOST!</B>')
- WriteLn('FAMILYP','</HTML>')
- Close('FAMILYP')
- END
- END
-
- WriteCh('FAMILYI',' (<A HREF="GENEAFIL.htm">')
- WriteLn('FAMILYI','<B>List of persons.</B></A>)</H2><PRE><TT>')
- DO While ~EOF('FNDBNAME')
- line = ReadLn('FNDBNAME')
- WriteLn('FAMILYI',CheckForReplacement(line))
- IF DoGenText THEN WriteLn('GenealogyText',spcs' 'CheckForNAReplacement(line))
- END
- Close('FNDBNAME')
- WriteLn('FAMILYI','</HTML>')
- Close('FAMILYI')
- END
- /**/
- IF MARRIAGECELEBRANT ~= '' | Minfo THEN DO
- WriteCh('PERSONFILE',spcs)
- IF Minfo THEN
- WriteCh('PERSONFILE','(<A HREF="F'mFGRN'I.htm"><B>family info</B></A>) ')
- IF MARRIAGECELEBRANT ~= '' THEN DO
- WriteCh('PERSONFILE',FAMLABEL1': 'MARRIAGECELEBRANT)
- IF DoGenText THEN WriteLn('GenealogyText',spcs||FAMLABEL1': 'MARRIAGEnCELEBRANT)
- END
- WriteLn('PERSONFILE','')
- END
- IF MARRIAGECOMMENT ~= '' THEN DO
- WriteLn('PERSONFILE',spcs' 'FAMLABEL2': 'MARRIAGECOMMENT)
- IF DoGenText THEN WriteLn('GenealogyText',spcs' 'FAMLABEL2': 'MARRIAGEnCOMMENT)
- END
- /*********************************************************************************/
-
- DO k = 0 TO 39 /* ??? GETTOTCHILDREN FGRN ??? */
- 'GETCHILD' mFGRN k
- mFGRNc = RESULT
- 'GETFIRSTNAME' mFGRNc
- mFGRNcFIRSTNAME = RESULT
- /**/
- IF mFGRNcFIRSTNAME ~= "" THEN DO
- HasCHILDREN = 1
- 'GETLASTNAME' mFGRNc
- mFGRNcLASTNAME = GetLastName(RESULT)
- 'GETFIRSTNAME' mFGRNc
- mFGRNcFIRSTNAME = RESULT
- 'GETSEX' mFGRNc
- mFGRNcGENDER = translate(RESULT,xrange('a','z'),xrange('A','Z'))
- thelastname = mFGRNcLASTNAME
- thegender = mFGRNcGENDER
- mFGRNcFULLNAME = GetFullName(mFGRNcFIRSTNAME)
- MmFGRNcFULLNAME = MGetFullName(mFGRNcFIRSTNAME)
- PmFGRNcFULLNAME = PGetFullName(mFGRNcFIRSTNAME)
- 'GETBIRTHDATE' mFGRNc
- mFGRNcBIRTHDATE = RESULT
- 'GETDEATHDATE' mFGRNc
- mFGRNcDEATHDATE = RESULT
- /**/
- mFGRNcFILENAME = 'P'mFGRNc
-
- jk = MARRIAGES - i
- WriteCh('PERSONFILE',vert.jk' |_____ <A HREF="'mFGRNcFILENAME'.htm">')
- /**/
- IF mFGRNcLASTNAME ~= LASTNAME THEN
- WriteCh('PERSONFILE',MmFGRNcFULLNAME)
- ELSE DO
- IF mFGRNcGENDER = "m" THEN WriteCh('PERSONFILE','<B>'mFGRNcFIRSTNAME'</B>')
- IF mFGRNcGENDER = "f" THEN WriteCh('PERSONFILE','<I>'mFGRNcFIRSTNAME'</I>')
- END
- WriteCh('PERSONFILE','</A> ')
- /**/
- IF mFGRNcBIRTHDATE ~= "" THEN
- WriteCh('PERSONFILE',' * 'mFGRNcBIRTHDATE)
- /**/
- IF mFGRNcDEATHDATE ~= "" THEN
- WriteCh('PERSONFILE',' + 'mFGRNcDEATHDATE)
-
- Writeln('PERSONFILE','')
- IF DoGenText THEN DO
- WriteCh('GenealogyText',vert.jk' |_____ 'PmFGRNcFULLNAME)
- IF mFGRNcBIRTHDATE ~= "" THEN WriteCh('GenealogyText',' * 'mFGRNcBIRTHDATE)
- IF mFGRNcDEATHDATE ~= "" THEN WriteCh('GenealogyText',' + 'mFGRNcDEATHDATE)
- WriteLn('GenealogyText','')
- END
- END
- END
- END
- /*********************************************************************************/
- END
- END
- ELSE DO
- WriteLn('PERSONFILE',' |')
- IF DoGenText THEN WriteLn('GenealogyText',' |')
- WriteLn('PERSONFILE',' 'MFULLNAME)
- IF DoGenText THEN WriteLn('GenealogyText',' 'PFULLNAME)
- END
- /* WriteLn('PERSONFILE','</TT></PRE>') */
- IF HasPARENTS THEN DO
- WriteLn('PERSONFILE','<HR>')
- /* WriteLn('PERSONFILE','<TT><PRE>') */
- IF DoGenText THEN DO
- WriteLn('GenealogyText','')
- WriteLn('GenealogyText','-----------------------------------------------------------')
- WriteLn('GenealogyText','')
- END
- WriteLn('PERSONFILE','<LI>Ancestors of 'MFULLNAME)
- IF DoGenText THEN WriteLn('GenealogyText',' Ancestors of 'PFULLNAME)
- IF DoGenText THEN WriteLn('GenealogyText','')
- Paternal(ScionIRN,' ')
- WriteCh('PERSONFILE',MFULLNAME)
- IF BIRTHDATE ~= "" THEN WriteCh('PERSONFILE',' * 'BIRTHDATE)
- IF DEATHDATE ~= "" THEN WriteCh('PERSONFILE',' + 'DEATHDATE)
- WriteLn('PERSONFILE','')
- IF DoGenText THEN DO
- WriteCh('GenealogyText',PFULLNAME)
- IF BIRTHDATE ~= "" THEN WriteCh('GenealogyText',' * 'BIRTHDATE)
- IF DEATHDATE ~= "" THEN WriteCh('GenealogyText',' + 'DEATHDATE)
- WriteLn('GenealogyText','')
- END
- Maternal(ScionIRN,' ')
- /* WriteLn('PERSONFILE','</TT></PRE>') */
- END
- /* ELSE */
- IF HasCHILDREN THEN DO
- WriteLn('PERSONFILE','<HR>')
- /* WriteLn('PERSONFILE','<PRE><TT>') */
- IF DoGenText THEN DO
- WriteLn('GenealogyText','')
- WriteLn('GenealogyText','-----------------------------------------------------------')
- WriteLn('GenealogyText','')
- WriteLn('GenealogyText',' Descendants of 'PFULLNAME)
- WriteLn('GenealogyText','')
- END
- WriteLn('PERSONFILE','<LI>Descendants of 'MFULLNAME)
- indent = " "
- WriteCh('PERSONFILE',indent||MFULLNAME)
- IF BIRTHDATE ~= "" THEN WriteCh('PERSONFILE',' * 'BIRTHDATE)
- IF DEATHDATE ~= "" THEN WriteCh('PERSONFILE',' + 'DEATHDATE)
- WriteLn('PERSONFILE','')
- IF DoGenText THEN DO
- WriteCh('GenealogyText',indent || PFULLNAME)
- IF BIRTHDATE ~= "" THEN WriteCh('GenealogyText',' * 'BIRTHDATE)
- IF DEATHDATE ~= "" THEN WriteCh('GenealogyText',' + 'DEATHDATE)
- WriteLn('GenealogyText','')
- END
- marriagesANDchildren(ScionIRN,indent)
- END
- /* WriteLn('PERSONFILE','<HR>')
- WriteLn('PERSONFILE','<Address>')
- 'GETPROGVERSION'
- VERSION = RESULT
- WriteCh('PERSONFILE','<H3>ScionGenealogist')
- IF VERSION > 0 THEN WriteCh('PERSONFILE',' V 'VERSION)
- WriteLn('PERSONFILE',' © Robbie J Akins; ')
- WriteLn('PERSONFILE','Scion2html.rexx © Harold H. Ipolyi</H3>')
- WriteLn('PERSONFILE','</Address>') */
- WriteLn('PERSONFILE','</TT></PRE>')
- WriteLn('PERSONFILE','</HTML>')
- Close('PERSONFILE')
- IF EndOfFile & DoGenText THEN WriteLn('GenealogyText','')
-
- IF target = "NORMAL" & LASTNAME ~= "" THEN DO
- WriteCh('GenealogyFile','<A HREF="'PfilN'.htm">')
- WriteCh('GenealogyFile',MFULLNAME)
- WriteCh('GenealogyFile','</A>')
- IF BIRTHDATE ~= "" THEN WriteCh('GenealogyFile',' *'BIRTHDATE)
- IF DEATHDATE ~= "" THEN WriteCh('GenealogyFile',' +'DEATHDATE)
- /*********************************************************************************/
- IF HasFATHER THEN DO
- WriteCh('GenealogyFile',' (()) ')
- IF HasFileFATHER THEN WriteCh('GenealogyFile','<A HREF="'FATHERFILENAME'.htm">')
- WriteCh('GenealogyFile',' 'MFATHERFULLNAME)
- IF HasFileFATHER THEN WriteCh('GenealogyFile','</A>')
- IF HasMOTHER THEN DO
- IF HasFATHER THEN WriteCh('GenealogyFile',' //\ ')
- IF HasFileMOTHER THEN WriteCh('GenealogyFile','<A HREF="'MOTHERFILENAME'.htm">')
- WriteCh('GenealogyFile',MMOTHERFULLNAME)
- IF HasFileMOTHER THEN WriteCh('GenealogyFile','</A>')
- END
- END
- /*********************************************************************************/
- WriteLn('GenealogyFile','<BR>') /* do not close, we have many more to go. */
- END
-
- RETURN
-
-
-
-
-
- IsNumeric: PROCEDURE
- PARSE ARG str
- RETURN DataType(str, 'W')
-
-
- /* create a file name short but unique */
-
- FilName: PROCEDURE
- PARSE ARG finm lanm bdate
- RETURN Space(substr(finm,1,2) substr(lanm,1,4) bdate)
-
- /******************************** Makedir **********************************/
-
- /* Makedir - If a directory under the given name already exists, or can be
- created, return 1, otherwise return 0. Though this function works
- correctly under Workbench 1.3, it has the same effect as the existing
- MAKEDIR; hence it is useful only under 2.0.
- */
- Makedir: procedure
- ds = statef(arg(1))
-
- if ds='' then
- result = 'MAKEDIR'(arg(1))
- else
- result = left(ds,3) = 'DIR'
-
- return result
-
- CheckForReplacement: PROCEDURE
- PARSE ARG line "<" last
- IF last = "" THEN RETURN CheckReplacement(line)
- RIRN = GetRIRN(last || ".")
- IF RIRN = 0 THEN RETURN line || "<" || last
- last = CheckForReplacement(last) /* recursion */
- lastend = GetEnd(last || ".")
- 'GETLASTNAME' RIRN
- RIRNLASTNAME = GetLastName(RESULT)
- 'GETFIRSTNAME' RIRN
- RIRNFIRSTNAME = RESULT
- thelastname = RIRNLASTNAME
- 'GETBIRTHDATE' RIRN
- RIRNBIRTHDATE = RESULT
- 'GETSEX' RIRN
- IF translate(RESULT,xrange('a','z'),xrange('A','Z')) = "m" THEN
- RIRNFULLNAME = '<B>' || GetFullName(RIRNFIRSTNAME) || '</B>'
- ELSE
- RIRNFULLNAME = '<I>' || GetFullName(RIRNFIRSTNAME) || '</I>'
- IF RIRNLASTNAME = "" THEN
- RETURN line || RIRNFULLNAME || lastend
- RIRNFILENAME = 'P'RIRN
- RETURN line || '<A HREF="'RIRNFILENAME'.htm">'RIRNFULLNAME'</A>' || lastend
-
- CheckReplacement: PROCEDURE
- PARSE ARG line "[" last
- IF last = "" THEN RETURN line
- RIRN = GetaRIRN(last || ".")
- IF RIRN = 0 THEN RETURN line || "[" || last
- last = CheckForReplacement(last) /* recursion */
- lastend = GetaEnd(last || ".")
- 'GETLASTNAME' RIRN
- RIRNLASTNAME = GetLastName(RESULT)
- 'GETFIRSTNAME' RIRN
- RIRNFIRSTNAME = RESULT
- thelastname = RIRNLASTNAME
- 'GETBIRTHDATE' RIRN
- RIRNBIRTHDATE = RESULT
- 'GETSEX' RIRN
- IF translate(RESULT,xrange('a','z'),xrange('A','Z')) = "m" THEN
- RIRNFULLNAME = '<B>' || GetFullName(RIRNFIRSTNAME) || '</B>'
- ELSE
- RIRNFULLNAME = '<I>' || GetFullName(RIRNFIRSTNAME) || '</I>'
- IF RIRNLASTNAME = "" THEN
- RETURN line || RIRNFULLNAME || lastend
- RIRNFILENAME = 'P'RIRN
- RETURN line || '<A HREF="'RIRNFILENAME'.htm">'RIRNFULLNAME'</A>' || lastend
-
- CheckForNAReplacement: PROCEDURE
- PARSE ARG line "<" last
- IF last = "" THEN RETURN CheckNAReplacement(line)
- RIRN = GetRIRN(last || ".")
- IF RIRN = 0 THEN RETURN line || "<" || last
- last = CheckForNAReplacement(last) /* recursion */
- lastend = GetEnd(last || ".")
- 'GETLASTNAME' RIRN
- RIRNLASTNAME = GetLastName(RESULT)
- 'GETFIRSTNAME' RIRN
- RIRNFIRSTNAME = RESULT
- thelastname = RIRNLASTNAME
- 'GETBIRTHDATE' RIRN
- RIRNBIRTHDATE = RESULT
- 'GETSEX' RIRN
- GENDER = translate(RESULT,xrange('a','z'),xrange('A','Z'))
- /* thelastname = GetFullName(RIRNLASTNAME) */
- thegender = GENDER
- IF thegender = "m" THEN
- RIRNFULLNAME = '' || GetFullName(RIRNFIRSTNAME) || ''
- ELSE
- RIRNFULLNAME = '' || GetFullName(RIRNFIRSTNAME) || ''
- RETURN line || RIRNFULLNAME lastend
-
- CheckNAReplacement: PROCEDURE
- PARSE ARG line "[" last
- IF last = "" THEN RETURN line
- RIRN = GetaRIRN(last || ".")
- IF RIRN = 0 THEN RETURN line || "[" || last
- last = CheckForNAReplacement(last) /* recursion */
- lastend = GetaEnd(last || ".")
- 'GETLASTNAME' RIRN
- RIRNLASTNAME = GetLastName(RESULT)
- 'GETFIRSTNAME' RIRN
- RIRNFIRSTNAME = RESULT
- thelastname = RIRNLASTNAME
- 'GETBIRTHDATE' RIRN
- RIRNBIRTHDATE = RESULT
- 'GETSEX' RIRN
- GENDER = translate(RESULT,xrange('a','z'),xrange('A','Z'))
- /* thelastname = GetFullName(RIRNLASTNAME) */
- thegender = GENDER
- IF thegender = "m" THEN
- RIRNFULLNAME = '' || GetFullName(RIRNFIRSTNAME) || ''
- ELSE
- RIRNFULLNAME = '' || GetFullName(RIRNFIRSTNAME) || ''
- RETURN line || RIRNFULLNAME lastend
-
- Paternal: PROCEDURE EXPOSE DoGenText
- PARSE ARG irn, indent
- 'GETPARENTS' irn
- PARENTS = RESULT
- 'GETPRINCIPAL' PARENTS
- PRINCIPAL = RESULT
- 'GETSPOUSE' PARENTS
- SPOUSE = RESULT
- 'GETSEX' PRINCIPAL
- IF RESULT = 'M' THEN DO
- FIRN = PRINCIPAL
- MIRN = SPOUSE
- END
- ELSE DO
- FIRN = SPOUSE
- MIRN = PRINCIPAL
- END
- pirn = FIRN
- IF 't'pirn't' ~= 'tt' THEN DO
- Paternal(pirn,' 'indent)
- 'GETLASTNAME' pirn
- pirnLASTNAME = GetLastName(RESULT)
- thelastname = pirnLASTNAME
- 'GETFIRSTNAME' pirn
- pirnFIRSTNAME = RESULT
- pirnFULLNAME = GetFullName(pirnFIRSTNAME)
- 'GETBIRTHDATE' pirn
- pirnBIRTHDATE = RESULT
- IF pirnLASTNAME ~= "" THEN
- pirnPfilN = 'P'pirn
- WriteCh('PERSONFILE',indent'- ')
- IF pirnLASTNAME ~= "" THEN WriteCh('PERSONFILE','<A HREF="'pirnPfilN'.htm">')
- WriteCh('PERSONFILE','<B>'pirnFULLNAME'</B>')
- IF pirnLASTNAME ~= "" THEN WriteCh('PERSONFILE','</A>')
- IF pirnBIRTHDATE ~= "" THEN WriteCh('PERSONFILE',' * 'pirnBIRTHDATE)
- 'GETDEATHDATE' pirn
- pirnDEATHDATE = RESULT
- IF pirnDEATHDATE ~= "" THEN WriteCh('PERSONFILE',' + 'pirnDEATHDATE)
- WriteLn('PERSONFILE','')
- IF DoGenText THEN DO
- WriteCh('GenealogyText',indent'- 'pirnFULLNAME)
- IF pirnBIRTHDATE ~= "" THEN WriteCh('GenealogyText',' * 'pirnBIRTHDATE)
- IF pirnDEATHDATE ~= "" THEN WriteCh('GenealogyText',' + 'pirnDEATHDATE)
- WriteLn('GenealogyText','')
- END
- Maternal(pirn,' 'indent)
- END
- RETURN 0
-
- Maternal: PROCEDURE EXPOSE DoGenText
- PARSE ARG irn, indent
- 'GETPARENTS' irn
- PARENTS = RESULT
- 'GETPRINCIPAL' PARENTS
- PRINCIPAL = RESULT
- 'GETSPOUSE' PARENTS
- SPOUSE = RESULT
- 'GETSEX' PRINCIPAL
- IF RESULT = 'M' THEN DO
- FIRN = PRINCIPAL
- MIRN = SPOUSE
- END
- ELSE DO
- FIRN = SPOUSE
- MIRN = PRINCIPAL
- END
- pirn = MIRN
- IF 't'pirn't' ~= 'tt' THEN DO
- Paternal(pirn,' 'indent)
- 'GETLASTNAME' pirn
- pirnLASTNAME = GetLastName(RESULT)
- thelastname = pirnLASTNAME
- 'GETFIRSTNAME' pirn
- pirnFIRSTNAME = RESULT
- pirnFULLNAME = GetFullName(pirnFIRSTNAME)
- 'GETBIRTHDATE' pirn
- pirnBIRTHDATE = RESULT
- IF pirnLASTNAME ~= "" THEN
- pirnPfilN = 'P'pirn
- WriteCh('PERSONFILE',indent'- ')
- IF pirnLASTNAME ~= "" THEN WriteCh('PERSONFILE','<A HREF="'pirnPfilN'.htm">')
- WriteCh('PERSONFILE','<I>'pirnFULLNAME'</I>')
- IF pirnLASTNAME ~= "" THEN WriteCh('PERSONFILE','</A>')
- IF pirnBIRTHDATE ~= "" THEN WriteCh('PERSONFILE',' * 'pirnBIRTHDATE)
- 'GETDEATHDATE' pirn
- pirnDEATHDATE = RESULT
- IF pirnDEATHDATE ~= "" THEN WriteCh('PERSONFILE',' + 'pirnDEATHDATE)
- WriteLn('PERSONFILE','')
- IF DoGenText THEN DO
- WriteCh('GenealogyText',indent'- 'pirnFULLNAME)
- IF pirnBIRTHDATE ~= "" THEN WriteCh('GenealogyText',' * 'pirnBIRTHDATE)
- IF pirnDEATHDATE ~= "" THEN WriteCh('GenealogyText',' + 'pirnDEATHDATE)
- WriteLn('GenealogyText','')
- END
- Maternal(pirn,' 'indent)
- END
- RETURN 0
-
- marriagesANDchildren: PROCEDURE EXPOSE DoGenText
- PARSE ARG ScionIRN,indent
- DO i = 0 TO 39 /* ??? GETTOTMARRIAGES IRN ??? */
- 'GETMARRIAGE' ScionIRN i
- MARRIAGE = RESULT
- IF MARRIAGE > -1 THEN DO
- MARRIAGES = i
- END
- END
- tMARRIAGESt = 't'MARRIAGES't'
- /* Say 'MARRIAGES = 'MARRIAGES tMARRIAGESt */
-
- IF tMARRIAGESt ~= 'tMARRIAGESt' THEN DO
- DO i = 0 TO MARRIAGES
- 'GETMARRIAGE' ScionIRN i
- mFGRN = RESULT
- IF mFGRN ~= "" THEN DO
- 'GETSPOUSE' mFGRN
- SPOUSE = RESULT
- IF SPOUSE = ScionIRN THEN
- DO
- 'GETPRINCIPAL' mFGRN
- SPOUSE = RESULT
- END
- 'GETLASTNAME' SPOUSE
- SPOUSELASTNAME = GetLastName(RESULT)
- 'GETFIRSTNAME' SPOUSE
- SPOUSEFIRSTNAME = RESULT
- thelastname = SPOUSELASTNAME
- 'GETSEX' SPOUSE
- thegender = translate(RESULT,xrange('a','z'),xrange('A','Z'))
- SPOUSEFULLNAME = GetFullName(SPOUSEFIRSTNAME)
- MSPOUSEFULLNAME = MGetFullName(SPOUSEFIRSTNAME)
- PSPOUSEFULLNAME = PGetFullName(SPOUSEFIRSTNAME)
- 'GETBIRTHDATE' SPOUSE
- SPOUSEBIRTHDATE = RESULT
- 'GETDEATHDATE' SPOUSE
- SPOUSEDEATHDATE = RESULT
- SPOUSEFILENAME = 'P'SPOUSE
- WriteCH('PERSONFILE',indent'spouse: ')
- IF SPOUSELASTNAME ~= "" THEN
- WriteCh('PERSONFILE','<A HREF="'SPOUSEFILENAME'.htm">')
- WriteCh('PERSONFILE',MSPOUSEFULLNAME)
- IF SPOUSELASTNAME ~= "" THEN
- WriteCh('PERSONFILE','</A>')
- IF SPOUSEBIRTHDATE ~= "" THEN
- WriteCh('PERSONFILE',' * 'SPOUSEBIRTHDATE)
- IF SPOUSEDEATHDATE ~= "" THEN
- WriteCh('PERSONFILE',' + 'SPOUSEDEATHDATE)
- IF DoGenText THEN DO
- WriteCh('GenealogyText',indent'spouse: 'PSPOUSEFULLNAME)
- IF SPOUSEBIRTHDATE ~= "" THEN
- WriteCh('GenealogyText',' * 'SPOUSEBIRTHDATE)
- IF SPOUSEDEATHDATE ~= "" THEN
- WriteCh('GenealogyText',' + 'SPOUSEDEATHDATE)
- WriteLn('GenealogyText','')
- END
- WriteLn('PERSONFILE','')
- indent2 = indent || " | "
- DO k = 0 TO 39 /* ??? GETTOTCHILDREN FGRN ??? */
- 'GETCHILD' mFGRN k
- mFGRNc = RESULT
- 'GETFIRSTNAME' mFGRNc
- mFGRNcFIRSTNAME = RESULT
- /**/
- IF mFGRNcFIRSTNAME ~= "" THEN DO
- 'GETLASTNAME' mFGRNc
- mFGRNcLASTNAME = GetLastName(RESULT)
- 'GETFIRSTNAME' mFGRNc
- mFGRNcFIRSTNAME = RESULT
- 'GETSEX' mFGRNc
- mFGRNcGENDER = translate(RESULT,xrange('a','z'),xrange('A','Z'))
- thelastname = mFGRNcLASTNAME
- thegender = mFGRNcGENDER
- mFGRNcFULLNAME = GetFullName(mFGRNcFIRSTNAME)
- MmFGRNcFULLNAME = MGetFullName(mFGRNcFIRSTNAME)
- PmFGRNcFULLNAME = PGetFullName(mFGRNcFIRSTNAME)
- 'GETBIRTHDATE' mFGRNc
- mFGRNcBIRTHDATE = RESULT
- 'GETDEATHDATE' mFGRNc
- mFGRNcDEATHDATE = RESULT
- /**/
- mFGRNcFILENAME = 'P'mFGRNc
- /**/
- WriteCh('PERSONFILE',indent2||'<A HREF="'mFGRNcFILENAME'.htm">'MmFGRNcFULLNAME'</A> ')
- /**/
- IF mFGRNcBIRTHDATE ~= "" THEN
- WriteCh('PERSONFILE',' * 'mFGRNcBIRTHDATE)
- /**/
- IF mFGRNcDEATHDATE ~= "" THEN
- WriteCh('PERSONFILE',' + 'mFGRNcDEATHDATE)
-
- Writeln('PERSONFILE','')
- IF DoGenText THEN DO
- WriteCh('GenealogyText',indent2||PmFGRNcFULLNAME)
- IF mFGRNcBIRTHDATE ~= "" THEN WriteCh('GenealogyText',' * 'mFGRNcBIRTHDATE)
- IF mFGRNcDEATHDATE ~= "" THEN WriteCh('GenealogyText',' + 'mFGRNcDEATHDATE)
- WriteLn('GenealogyText','')
- END
- /**********************/
- marriagesANDchildren(mFGRNc,indent2)
- END
- END
- END
- END
- END
- RETURN 0
-
- GetRIRN: PROCEDURE
- PARSE ARG numb ">" last
- IF last = "" THEN RETURN 0
- IF IsNumeric(numb) THEN RETURN numb
- RETURN 0
-
- GetaRIRN: PROCEDURE
- PARSE ARG numb "]" last
- IF last = "" THEN RETURN 0
- IF IsNumeric(numb) THEN RETURN numb
- RETURN 0
-
- GetEnd: PROCEDURE
- PARSE ARG line ">" last
- IF last = "" THEN RETURN substr(line,1,length(line)-1)
- RETURN substr(last,1,length(last)-1)
-
- GetaEnd: PROCEDURE
- PARSE ARG line "]" last
- IF last = "" THEN RETURN substr(line,1,length(line)-1)
- RETURN substr(last,1,length(last)-1)
-
- GetLength: PROCEDURE
- PARSE UPPER ARG names
- nonletters = length(compress(names, xrange('A','Z')))
- RETURN Length(names) - nonletters * 4 / 10
-
- /* create a full name from first, last, and honorifics parts */
-
- GetFullName: PROCEDURE EXPOSE thelastname
- PARSE ARG firstnames "," hon
- IF hon = "" THEN DO
- IF length(firstnames) > 2 THEN
- IF substr(firstnames,length(firstnames)-1,length(firstnames)) = "V." THEN
- firstnames = substr(firstnames,1,length(firstnames)-2) || "v."
- RETURN firstnames thelastname
- END
- RETURN firstnames Space(thelastname) || ","hon
-
- MGetFullName: PROCEDURE EXPOSE thelastname thegender
- PARSE ARG firstnames "," hon
- gchar = "B"
- IF thegender = "f" THEN gchar = "I"
- IF hon = "" THEN DO
- IF length(firstnames) > 2 THEN
- IF substr(firstnames,length(firstnames)-1,length(firstnames)) = "V." THEN
- firstnames = substr(firstnames,1,length(firstnames)-2) || "v."
- RETURN "<"gchar">"firstnames thelastname"</"gchar">"
- END
- RETURN "<"gchar">"firstnames Space(thelastname) || ","hon"</"gchar">"
-
- PGetFullName: PROCEDURE EXPOSE thelastname thegender
- PARSE ARG firstnames "," hon
- schar = "1"
- uchar = "2"
- IF thegender = "f" THEN DO
- schar = "3"
- uchar = "3"
- END
- IF hon = "" THEN DO
- IF length(firstnames) > 2 THEN
- IF substr(firstnames,length(firstnames)-1,length(firstnames)) = "V." THEN
- firstnames = substr(firstnames,1,length(firstnames)-2) || "v."
- RETURN ""schar"m"firstnames thelastname""uchar"m"
- END
- RETURN ""schar"m"firstnames Space(thelastname) || ","hon""uchar"m"
-
-
-
- /* Capitalize last name; also handle special cases! */
- /* End users must customize this code to aviod trashy output */
-
- GetLastName: PROCEDURE
- PARSE ARG str
- IF str = "BAUER-GAUSS" THEN RETURN "Bauer-Gauss"
- IF str = "DE IPOLYI" THEN RETURN "deIpolyi"
- IF str = "DEIPOLYI" THEN RETURN "deIpolyi"
- IF str = "MC GRADY" THEN RETURN "McGrady"
- IF str = "KIS RED" THEN RETURN "KisRed"
- IF str = "ROTH-HACKENSCHMIDT" THEN RETURN "Roth-Hackenschmidt"
- IF str = "SCHüCH-GLICKHFELDEN" THEN RETURN "Schüch-Glickhfelden"
- ELSE
- DO
- spart = translate(substr(str,2,length(str)),xrange('a','z'),xrange('A','Z'))
- END
- RETURN substr(str,1,1)Space(spart)
-